package org.ehe.erp.enums;

import lombok.Getter;
import lombok.RequiredArgsConstructor;
import org.ehe.common.core.core.IntArrayValuable;

import java.util.Arrays;
import java.util.Set;

/**
 * ERP 审核状态枚举
 *
 * TODO 芋艿：目前只有待审批、已审批两个状态，未来接入工作流后，会丰富下：待提交（草稿）=》已提交（待审核）=》审核通过、审核不通过；另外，工作流需要支持“反审核”，把工作流退回到原点；
 *
 * @author
 */
@RequiredArgsConstructor
@Getter
public enum ErpAuditStatus implements IntArrayValuable {

    PENDING_SUBMIT(0,"待提交"),
    SUBMITTED(1,"已提交"),
    WAITING(2,"等待人员响应"),
    IN_PROCESS(4,"处理中"),
    REJECTED(9,"已驳回"),
    PROCESS(10, "审核中"), // 审核中
    APPROVE(20, "已审核"); // 审核通过
    //REJECTED_SUBMITTED(30, "驳回再提交")

    public static final int[] ARRAYS = Arrays.stream(values()).mapToInt(ErpAuditStatus::getStatus).toArray();

    /**
     * 允许编辑的状态集合
     */
    public static final Set<Integer> ALLOW_EDIT = Set.of(
        PENDING_SUBMIT.getStatus(),
        REJECTED.getStatus(),
        IN_PROCESS.getStatus()
    );

    /**
     * 状态
     */
    private final Integer status;
    /**
     * 状态名
     */
    private final String name;

    @Override
    public int[] array() {
        return ARRAYS;
    }

}
